Guía Práctica Desarrollo Web con PHP 5 y MySQL/Capítulo 2: PHP
Category:Desarrollo Web con PHP 5 y MySQL Category:Guías Prácticas Category:Ejemplos Página HTML Vamos a comenzar viendo un ejemplo de página HTML. Su código es el siguiente: Prueba Esto es una página HTML. En lo que a nosotros respecta, estas páginas son estáticas: su contenido es inalterable. La hora en PHP Nuestra primera página PHP sólo muestra la hora. Su código es muy sencillo: La hora es: . Mientras que la página HTML que vimos anteriormente era estática (siempre que la veamos con un cliente Web su aspecto será el mismo), el de esta página PHP siempre será diferente, dependiendo de la hora en la que la página sea mostrada. Es por ello que estas páginas se conocen como dinámicas. Funciones de salida PHP nos proporciona diferentes formas de mostrar información en las páginas. Hemos visto ésta: La hora es: . Pero también podemos utilizar las funciones echo y print: La hora es: . La hora es: . Comentarios Es recomendable que introduzcamos comentarios en nuestras páginas PHP. Estos comentarios serán ignorados por el preprocesador de PHP, pero aquellos que tengan acceso al código fuente de las páginas podrán leerlos. Por lo general, los comentarios se utilizan para comentar aspectos del programa, indicar cuándo fue creado, por quién o qué tareas quedan por realizar. Existen dos tipos de comentario: de línea y de párrafo. Si comenzamos una línea con la pareja de caracteres //, esa línea será tomada por PHP como un comentario: La hora es: . Los comentarios de párrafo comienzan con la pareja de caracteres /* y terminan con */: La hora es: . El siguiente es un ejemplo de cómo utilizar los comentarios para incluir información en el encabezado de nuestras páginas: La hora es: . Variables Para declarar una variable en PHP sólo tenemos que escribir el nombre de la variable y asignarle un valor. Por ejemplo: El código anterior almacena en la variable $hora la hora tal y como la mostrábamos en los ejemplos anteriores. Las siguientes líneas son ejemplos de declaraciones correctas: $hora = date("H:i:s"); $Hora = date("H:i:s"); $_hora = date("H:i:s"); $_1hora = date("H:i:s"); Mientras que esta declaración es incorrecta, ya que su nombre comienza con un número: $1hora = date("H:i:s"); Tipos de datos: booleano Una variable de tipo booleano puede tener dos posibles valores: verdadero o falso. En el siguiente programa declaramos dos variables de tipo booleano: Tipos de datos: entero En una variable de tipo entero podemos almacenar valores enteros positivos y negativos, incluido el cero. Por ejemplo: Tipos de datos: decimal Una variable de tipo decimal puede contener cualquier número en coma flotante. Por ejemplo: Tipos de datos: cadena Una cadena de texto no más que una secuencia de caracteres. PHP nos permite definir cadenas de tres formas diferentes: #Con comillas simples. #Con dobles comillas. #En bloque. Las cadenas más sencillas son las que se especifican entre comillas simples: Las cadenas entre comillas dobles tienen una característica añadida que las hace muy interesantes: si contienen el nombre de una variable existente, PHP sustituirá la variable por su valor. Por ejemplo: Tras ejecutar estas dos líneas, el contenido de la variable $cadena será "Un año tiene 12 meses.". El tercer tipo de cadenas, en bloque, es muy similar al segundo tipo, aunque son más adecuadas para cadenas de gran longitud: Tipos de datos: matrices Las matrices nos permiten tener la información mucho más organizada, pudiendo acceder a una serie de valores a través de una sola variable, y utilizando un índice como modificador. La siguiente es una de las posibles formas de declarar una matriz que contenga tres valores: Para acceder a estos elementos sólo necesitamos indicar el índice de cada elemento tras el nombre de la variable, entre corchetes. Si los valores anteriores representasen las películas vistas en cada mes, podríamos mostrar esa información así: - en enero: $peliculas0. - en febrero: $peliculas1. - en marzo: $peliculas2. PELICULAS; ?> Podemos añadir nuevos elementos a una matriz después de haberla creado: PHP se encargará automáticamente de crear el cuarto elemento de la matriz. Para ver el contenido de la matriz tras añadir este nuevo elemento podemos utilizar una función muy útil: print_r(), que recibe como argumento una matriz: En realidad, tras las matrices en PHP hay mucho más que lo que parece a primera vista. Más que matrices, podríamos considerar que PHP nos proporciona diccionarios, con los que podemos traducir de un valor a otro. La declaración de una matriz que hemos utilizado anteriormente es la versión simplificada de la misma, en la que sólo se asignan valores. Por ejemplo, ésta sería una forma igualmente válida de declarar la misma matriz, pero asociando palabras en lugar de números a cada valor: 9, 'febrero' => 12, 'marzo' => 21, 'abril' => 17 ); print_r($peliculas); ?> Operador básico de asignación Ya hemos trabajado con el operador de asignación, el signo igual, en expresiones como: En dicha expresión, lo que está a la derecha del operador de asignación, el signo igual, se guarda en lo que esta a la izquierda. Operadores aritméticos Son los que aprendimos a utilizar en la escuela, para sumar, restar, multiplicar y dividir: *suma: +. *resta: -. *multiplicación: *. *división: /. Combinando estos operadores con el operador de asignación podemos comenzar a realizar tareas verdaderamente útiles, como la suma de dos números: También podemos guardar esos valores en variables y posteriormente realizar la suma: Existen unos operadores que combinan las asignaciones con los operadores aritméticos. Utilizando uno de estos operadores podemos volver a escribir el fragmento de código anterior de esta forma: Lo mismo puede aplicarse al resto de operadores aritméticos, con lo que disponemos de '-=', *= y /=. Podríamos considerarlos como operadores extendidos de asignación. Operadores de comparación Nos permiten comparar dos valores. Nos basaremos en estas comparaciones para tomar decisiones en nuestro código. El resultado de utilizar este operador es un valor booleano: '; echo '$i != $j: ';echo $i != $j;echo ' '; echo '$i <> $j: ';echo $i <> $j;echo ' '; echo '$i < $j: ';echo $i < $j; echo ' '; echo '$i > $j: ';echo $i > $j; echo ' '; echo '$i <= $j: ';echo $i <= $j;echo ' '; echo '$i >= $j: ';echo $i >= $j;echo ' '; ?> Sólo cuando el resultado de la comparación sea verdadero se mostrará un uno. Operadores lógicos Operan con valores booleanos, devolviendo TRUE o FALSE dependiendo de si se cumple una condición o no. Veremos cuatro operadores lógicos: and, or, xor y not. El resultado de utilizar and sobre dos valores sólo es TRUE si los dos valores sobre los que se está realizando la operación son TRUE: A diferencia del operador and, el resultado de utilizar or sobre dos valores sólo es FALSE si los dos valores sobre los que se está realizando la operación son FALSE: El operador xor devuelve TRUE cuando los dos valores son distintos: El operador not (!) es un operador unario, puesto que se aplica a una sola variable: Operadores de incremento Y también de decremento. Gracias a estos operadores podemos simplificar operaciones como éstas: Que son equivalentes a las siguientes: Aunque ayudan a simplificar, en ocasiones pueden complicarlo todo. PHP nos deja situar estos operadores antes y después de la variable a la que modifican, pero dependiendo de dónde los coloquemos el resultado puede variar: '; echo ++$j; ?> Operadores de concatenación La operación más importante que puede realizar sobre una cadena es la concatenación: unir dos cadenas para formar una sola. El operador de concatenación es el punto: El resultado de esta operación es la cadena "Esto es una cadena.". Igual que en las operaciones aritméticas, podemos combinar una concatenación con una asignación para simplificar el código: El resultado será el mismo en ambos casos. Precedencia de operadores Debemos estar siempre seguros del orden en el que PHP realizará las operaciones que le indiquemos. ¿Lo estamos ahora? ¿Cuál será el resultado de esta operación? ¿Contendrá 10? ¿Contendrá 8? Depende de la precedencia que tengan los operadores. En este caso concreto, el resultado será 8, porque el operador de multiplicación tiene prioridad sobre el de suma. Podemos modificar la precedencia de los operadores utilizando paréntesis para envolver las operaciones que queremos realizar antes. La operación anterior puede ser modificada para obtener 10 como resultado: PHP realizará primero la operación que está entre paréntesis. Cambios de tipo Como resultado de las diferentes operaciones que realicemos sobre las variables, es posible que modifiquemos el tipo de alguna de ellas: ¿Cuál será el resultado de estas operaciones? Vamos a ayudarnos de la función gettype(), que recibe como argumento el nombre de una variable y devuelve una cadena de texto que contiene el tipo de la variable pasada: '; // Concatenamos el número y la cadena. $i .= ' '.$cadena; echo $i; echo ' '; echo 'Tipo de $i: '.gettype($i); ?> Como puede comprobar, antes de la concatenación $i es de tipo entero (integer), pero después pasa a ser de tipo cadena (string). Para liar aún más las cosas, resulta que también podemos hacer esto otro: '; $cadena = 20; echo gettype($cadena); ?> Y hemos cambiado el tipo de una variable que era una cadena a un entero. Otra de las características de PHP es forzar el tipo de las variables. Podemos obligar a que una variable de un tipo determinado se comporte como una de otro tipo con solo indicar entre paréntesis y antes de la variable el tipo que deseamos: '; echo gettype($entero); ?> Tenga precaución, sin embargo. En el ejemplo anterior $entero contendrá el valor entero 10, pero si $cadena hubiese contenido la cadena "texto", el resultado sería que $entero contendría el valor 0: Instrucciones de control condicionales El siguiente es un ejemplo de utilización de la instrucción condicional if: Podemos mejorar este pequeño programa utilizando else junto con if. Así podemos indicar la acción a seguir en caso de que la condición no se cumpla: Lo que puede ampliarse utilizando elseif: Las instrucciones condicionales pueden anidarse, es decir, pueden escribirse unas dentro de otras, gracias a lo que podemos volver a escribir el código anterior así: Las llaves ({}) nos permiten asociar grupos de líneas a cada parte de la condición: '; }else{ echo 'Es mediodía. '; echo '¡Queda menos para ir a comer! '; } ?> Utilizando instrucciones if y else podemos complicar el programa anterior todo lo que queramos, por ejemplo comprobando la hora y escribiendo mensajes en función de la misma. Por ejemplo, para informar de que a las 9 de la mañana entramos a trabajar, a las 14 salimos a comer, a las 16 volvemos a entrar y a las 19 nos vamos para casa escribiríamos el siguiente código: PHP nos proporciona otra instrucción condicional que permite escribir un programa equivalente al anterior, pero de forma más clara: la instrucción switch. Incluso podemos indicar qué hacer en caso de que no se cumpla ninguna de las condiciones: Instrucciones de control iterativas: for La instrucción for permite ejecutar un bloque de instrucciones un número concreto de veces. El siguiente fragmento de código contiene un bucle for que se ejecuta tres veces. Cada vez que lo hace, escribe el mismo texto: '; } ?> El siguiente es un ejemplo mucho más vistoso de bucle for: Bucle for'; } ?> Un bucle for puede utilizarse para recorrer todos los elementos de una matriz y mostrar su contenido. En este caso nos ayudaremos de las funciones current y next. La primera nos permite obtener el valor del elemento actual de la matriz, la segunda avanza una posición dentro de la matriz: for ($i = 1; $i <= $meses; $i++){ echo $i.': '.current($peliculas).' '; next($peliculas); } Instrucciones de control iterativas: foreach Traducido como "para cada", con foreach podemos recorrer todos los elementos de una matriz sin necesidad de saber cuántos elementos la componen. Esto nos puede ser de mucha utilidad en nuestro ejemplo de las películas por mes: 9, 'febrero' => 12, 'marzo' => 21, 'abril' => 17 ); foreach ($peliculas as $mes => $vistas){ echo 'En '.$mes.' vi '.$vistas.'. '; } ?> Instrucciones de control iterativas: while Podemos crear un bucle de este tipo que retenga el control mientras que, dentro de la hora, el segundo en el que nos encontremos no sea cero: Existe otra variante de este bucle, que sigue las mismas premisas que el anterior, pero con algunas salvedades que comprenderemos mejor con un ejemplo: Debemos utilizar do while cuando queramos que el cuerpo del bucle se ejecute al menos una vez, y while en caso contrario. Es posible que los ejemplos anteriores provoquen un error si el tiempo máximo de ejecución definido en php.ini es inferior a 60 segundos. Puede modificar ese valor a través de la variable max_execution_time. Salida de bucles Es posible alterar el flujo de la ejecución de un bucle mediante algunas instrucciones especiales: break y continue. La primera de ellas, break, puede utilizarse para detener la ejecución de los bucles for, foreach, while y do while: Por otra parte, podemos utilizar continue cuando queramos saltar el resto de líneas de código asociadas a un bucle y continuar con la siguiente iteración: 9, 'febrero' => 12, 'marzo' => 0, 'abril' => 17 ); foreach ($peliculas as $mes => $vistas){ if ($vistas 0){ continue; } echo 'En '.$mes.' vi '.$vistas.'. '; } ?> Como resultado, el código anterior sólo mostrará in-formación sobre los meses de enero, febrero y abril. Enlaces interesantes Puede que encuentre interesantes los siguientes enlaces: *la documentación de PHP. *también en castellano. *todos los documentos de PHP. *uno de los editores de PHP que recomendamos, PHPedit, para Windows. *y, además, PHP Designer 2005. *otro editor de PHP, gPHPedit, para Gnome. *para crear aplicaciones de escritorio con PHP. *el buscador de acrónimos Acronym Finder.